feat: Typings generator with generics#6235
Merged
sirasistant merged 12 commits intomasterfrom May 7, 2024
Merged
Conversation
…rotocol/aztec-packages into arv/generics_in_protocol_circuits
LeilaWang
reviewed
May 7, 2024
| * Since monomorphization of the generics destroys information, this process is not guaranteed to return the original structure. | ||
| * However, it should succesfully unify all struct types that share the same name and field names. | ||
| */ | ||
| export class Demonomorphizer { |
Contributor
There was a problem hiding this comment.
Saw a lots of blue squiggles, apparently the spell checking plugin doesn't think this is a read word 😂 Might have to add all the variations to cspell.json.
| if (structTypesToExport.has(id)) { | ||
| continue; | ||
| } | ||
| structTypesToExport.set(id, struct.structType); |
Contributor
There was a problem hiding this comment.
Won't it break for structs like these?
struct Foo {
value: Field,
}
struct Foo {
value: Bar,
}
Contributor
Author
There was a problem hiding this comment.
Since the types used are passed through the demonomorphizer, it guarantees that it'll only generate one struct type for all struct variants with the same id. In this case, since these two structs have the same name and field names, (same id) it'll demonomorphize them into
struct Foo<A> {
value: A
}So the generate_ts_from_abi can safely generate one type for each id
TomAFrench
added a commit
that referenced
this pull request
May 8, 2024
* master: (25 commits) fix: Enable client proof tests (#6249) chore: update cspell for abi demonomorphizer (#6258) feat(aztec-nr): add 'with_gas()' function to avm call interface (#6256) git subrepo push --branch=master noir-projects/aztec-nr git_subrepo.sh: Fix parent in .gitrepo file. [skip ci] chore: replace relative paths to noir-protocol-circuits git subrepo push --branch=master barretenberg fix: Pw/update merge check (#6201) chore(master): Release 0.37.1 (#6148) fix: Cl/split out e2e tests (#6242) feat: Typings generator with generics (#6235) chore(ci): fix restarts with fresh spot, acir test fixes, non-mandatory benches (#6226) chore: misc AVM migration prep changes (#6253) feat!: AES blackbox (#6016) chore(docs): Fix some typos in specs of private kernel initial (#6224) chore(aztec-macros): avm function return types are auto tagged as `pub` (#6250) chore(aztec-nr): create a 'with_selector' version of `emit_unencrypted_log` in avm context (#6248) fix: registering PublicDataWitness in JsonRpcServer (#6243) feat: Sync from noir (#6234) feat(avm-simulator): consider previous pending nullifiers across enqueued calls (#6188) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a demonomorphizer in the
generate_ts_from_abiscript/tool so we can use generic types in the protocol circuits interface. It also fixes the MembershipWitness issue where we had to use concrete types instead of a generic due to the old limitation of the types generator.